/**
 * @author : xwj
 * @date : 2021/9/22 19:50
 * @description : 给你一个有序数组 nums ，请你 原地 删除重复出现的元素，使每个元素 只出现一次 ，返回删除后数组的新长度。
 *                不要使用额外的数组空间，你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
 * @class : test26
 **/

public class test26 {

    //1. 1 ms	39.6 MB
    //因为第一个一定不会出现过，所有从第二个开始遍历数组，
    // 设置双指针，第一个指针用来保存未重复的数组的末尾，第二个制作用例移动数组
    // 遇到相同的就直接跳过，遇到不同的就放到数组前面的对应位置。
    public static int removeDuplicates(int[] nums) {
        if (nums.length < 2) {
            return nums.length;
        }
        int index = 1, pre = 1;
        while (index < nums.length) {
            if (nums[index] != nums[pre - 1]) {
                nums[pre] = nums[index];
                pre++;
            }
            index++;
        }
        return pre;
    }

    public static void main(String[] args) {
        int[] nums = new int[]{1,1,2,3,4,5,5,5,6,6,6};
        System.out.println(removeDuplicates(nums));
    }

}
